##########################################################################################
# Appendix Figure 0 1a
##########################################################################################
# Content
##########################################################################################
# Sentiment Descriptive Plots
##########################################################################################
# Contents
##########################################################################################
# 1) Dependencies
# 2) Intro
# 3) Table Ensemble Model Evaluation (SDM)
##########################################################################################
# 1) Dependencies
##########################################################################################
#Libraries
library(readr)
library(dplyr)
library(ggplot2)
library(gganimate)
library(ggeffects)
library(ggExtra)
library(ggridges)
library(ggrepel)
library(grid)
library(scales)
library(lubridate)
library(extrafont)
library(reshape2)
library(here)
library(ggforce)
library(png)
library(readxl)
library(grid)
library(gridExtra)
library(ggpubr)
library(ggalt)
library(stringr)
##########################################################################################
# 2) Intro
##########################################################################################
rm(list = ls())

args = commandArgs()

scriptName = args[substr(args,1,7) == '--file=']

if (length(scriptName) == 0) {
  scriptName <- rstudioapi::getSourceEditorContext()$path
} else {
  scriptName <- substr(scriptName, 8, nchar(scriptName))
}

pathName = substr(
  scriptName, 
  1, 
  nchar(scriptName) - nchar(strsplit(scriptName, '.*[/|\\]')[[1]][2])
)

setwd(pathName)
getwd()
parent_path <- getwd()
##########################################################################################
# 3) Table Newspaper Stats
##########################################################################################
suppressWarnings(source('ggplot_theme_ddl.R', encoding = "UTF-8"))

# Load Data
df <- readRDS("../data/smd_ner_2015_2019_combined.RDS")
candidates_list_15 <- read.csv('../support/candidates-2015/00-Named_Entity_List_withID.csv', stringsAsFactors = F) %>% 
  as_tibble %>% mutate(id=as.character(id))
candidates_list_19 <- read.csv('../support/candidates-2019/00-Named_Entity_List_withID.csv', stringsAsFactors = F) %>% 
  as_tibble %>% mutate(id=as.character(id))

candidates_list_19 <- candidates_list_19 %>% mutate(candidacy = as.character(gsub("\\s", " ", council))) %>% 
  mutate(council = case_when(candidacy %in% c("SR", "Former Staenderat", "Former Staenderat") ~ "sr",
                             candidacy %in% c("NR", "Former Nationalrat", "Former Nationalrat") ~  "nr",
                             candidacy %in% c("SR und NR", "NR und SR") ~ "sr & nr")) %>% 
  dplyr::select(-c(candidacy))

df$year <- as.character(df$year)
df$date <- format(as.Date(df$date, "%m-%d"), format = "%m-%d")
df$fullname <- ifelse(df$fullname == "Adèle Goumaz", "Adèle Thorens Goumaz", df$fullname)
df$fullname <- ifelse(df$fullname == "Niklaus-Samuel Gugger", "Nik Gugger", df$fullname)
df$incumbent <- ifelse(df$fullname == "Philipp Müller", 1, df$incumbent)

# Remove Federal Councilors
council <- TRUE
# Remove Party Presidents
president <- TRUE

# Council members 2015
council_15 <- c("Ueli Maurer", "Alain Berset", "Didier Burkhalter",
                "Simonetta Sommaruga", "Eveline Widmer Schlumpf",
                "Johann Schneider-Ammann", "Doris Leuthard")

# Council members 2019
council_19 <- c("Ueli Maurer", "Alain Berset", "Ignazio Cassis",
                "Simonetta Sommaruga", "Guy Parmelin",
                "Karin Keller-Sutter", "Viola Amherd")

# Party Presidents 2015
presi_15 <- c("Toni Brunner", "Christian Levrat", "Philipp Müller",
              "Christophe Darbellay", "Regula Rytz", "Martin Bäumle", "Martin Landolt")

# Party Presidents 2019
presi_19 <- c("Albert Rösti", "Christian Levrat", "Petra Gössi",
              "Gerhard Pfister", "Regula Rytz", "Jürg Grossen", "Martin Landolt")


# Remove Council Members:
if(council == T){
  df <- df %>% dplyr::filter((year == "2015" & !fullname %in% council_15) |
                               (year == "2019" & !fullname %in% council_19))
}
# Remove Party Presidents:
if(president == T){
  df <- df %>% dplyr::filter((year == "2015" & !fullname %in% presi_15) |
                               (year == "2019" & !fullname %in% presi_19))
}
###############################################################################
# 13) Aggregation for Fig. 4
###############################################################################
agg <- df %>% group_by(year,date,gender) %>% summarise(n = n()) %>%  ungroup %>%
  filter(gender %in% c('m','f')) %>%
  group_by(year,date) %>% mutate(n_tot = sum(n)) %>%
  mutate(freq = n/n_tot) %>%
  mutate(after_strike = ifelse(as.Date(paste0(year,"-",date)) > as.Date("2019-06-14"), 1, 0)) %>%
  mutate(selectsclass = "All Together")

agg <- agg %>% ungroup %>% group_by(year, gender, selectsclass) %>% tidyr::complete(date = unique(df$date), fill = list(n = 0,
                                                                                                                            freq = 0,
                                                                                                                            n_tot = NA))



agg <- agg %>% mutate(after_strike = ifelse(as.Date(paste0(year,"-",date)) > as.Date("2019-06-14"), 1, 0))

agg <- agg %>% filter(gender == "f") %>% mutate(date = as.Date(date, format = ("%m-%d"))) %>%
  mutate(selectsclass = case_when(selectsclass == "All Together" ~ "All Newspaper Articles"))

labeldat = data.frame(selectsclass = c("All Newspaper Articles"),
                      x = c(as.Date("2023-06-14"), as.Date("2023-06-14")),
                      y = c(.3, .8),
                      label = c("Women's Strike", "Women's Strike") )

###############################################################################
# Fig. A1
###############################################################################
# Values for colors
values_year <- c("2019" = "#DD2461", "2015" = "#7D7D7C")

f3 <- ggplot(agg, aes(y = freq, x=date, color = year)) +
  geom_smooth(aes(y = freq, x=date, color = year), filter(agg, after_strike == 0), inherit.aes = F, formula = "y ~ x",method = "loess", se = F, n = 1000, span = .3, size = 0.5) +
  geom_smooth(aes(y = freq, x=date, color = year), filter(agg, after_strike == 1), inherit.aes = F, formula = "y ~ x",method = "loess", se = F, n = 1000, span = .3, size = 0.5) +
  #geom_point(size = .2, alpha = .2) +
  geom_vline(xintercept = (as.Date("2024-06-14")), color = "grey") +
  geom_text(data = labeldat, mapping = aes(x = x-3, y = y, label = label), angle = 90, size = 6, color = "black", inherit.aes = F) +
  scale_x_date(breaks = "2 month", labels = date_format("%b"), expand = c(0, 0)) +
  scale_y_continuous(labels = scales::percent_format(accuracy=1)) +
  facet_wrap(~selectsclass, ncol = 1, scales = "free_y") +
  ddl_theme() +
  labs(title = '',
       y = 'Share of Mentions', x = 'Days', color = "Year:") +
  scale_color_manual(name="Year", values = values_year, labels = c("2019", "2015")) +
  theme(legend.position = "bottom", legend.direction = "horizontal",
        strip.background = element_blank(), strip.text = element_text(color = "black"),
        axis.text.x = element_text(angle = 0, hjust = .5, vjust = 1, size = 16),
        axis.text.y = element_text(hjust=.5, size = 20),
        strip.text.x = element_text(size = 20),
        axis.title = element_text(size = 20),
        plot.title = element_text(size = 24),
        legend.text = element_text(size = 20),
        legend.title = element_text(size = 20),
        plot.margin = unit(c(.5,1.3,.5,.5), "cm"),
        legend.key.size = unit(1.5,"line"),
        axis.line.x = element_line(color="black", size = .5),
        axis.line.y = element_line(color="black", size = .5),
        panel.spacing.x=unit(2.5, "lines"))


f3

ggsave(plot = f3, filename='../img_appendix/afigure_0_1a.png',width=16, height=12, dpi = 300)
